//管理初始化函数集合
import proxyData from "./proxy";
import observe from './observe';

function initState(vm) {
  var options = vm.$options;

  //排除用户没有写data对象属性的情况
  if (options.data) {
    initData(vm);
  }

  // if (options.computed) {
  //   initComputed(vm);
  // }
}

function initData(vm) {
  var data = vm.$options.data;

  //为了方便用户写法： this.data/ vm.data 对data进行getter/setter
  //vm._data vm挂载的临时data
  //返回一个改变this指向的data对象或者是一个空的对象
  vm._data = data = typeof data === 'function' ? data.call(vm) : data || {};

  //对data底下每一个属性都要进行访问代理
  for (var key in data) {
    // console.log(key);
    // title/classNum/total/teacher/students
    proxyData(vm, '_data', key);
  }

  //观察data 且观察data内部的东西
  observe(vm._data);
}

export {
  initState
}